Linux教程


对于每个人程序员而言,平日里或多或少都会接触到 Linux ,在服务器方面, Linux 更是占据江山,本文简单介绍一些日常高频使用的命令。

一、基本命令

1. 系统设置

(1) 时间修改

例:将当前时间设置为 10 点:date -s 10:00

将当前日期设置为 2022-1-1date -s 1/1/2022

date -s <时间>
(2) 关闭系统

通过 reboot 则可实现服务器重启

shutdown -r Now               # 立即重启

shutdown -h 18:00             # 设置 18:00 关机

shutdown -r +1                # 设置 1 分钟后重启

2. 信息查看

arch 命令可以查看当前服务是 arm 架构还是 x86 架构。

arch                # 查看系统内核

nproc               # 查看 CPU 核心数

free -h             # 查看内存使用情况

3. 文件信息

通过 ls 命名查看目录文件信息。

ls -lh                      # 仅文件名,简写为:ls

ls -l                       # 详细信息: 简写为:ll

ls -a                       # 包括隐含文件 

file <file_name>            # 查看文件类型,目录为蓝色,文件为灰色,绿色为隐藏文件。     

4. 磁盘信息

通过 df 命令查看磁盘各分区使用情况。

df -h                      # 带单位显示文件系统的大小

du -h --max-depth=1        # 目录下各文件大小(指定层级为 1)

5. 目录切换

通过 cd 命令可实现目录切换。

cd ./               # 进入上级目录
        
cd ../              # 进入当前目录

cd ~                # 进入当前登录用户的同名目录 

pwd                 # 显示当前位置

二、目录管理

1. 目录创建

通过 mkdir 命令创建目录,创建的目录名中若存在空格需使用 \ ,如 mkdir a\ b 即在当前创建目录 a b

mkdir <dire_name>               # 创建目录

mkdir -p <dire_1>/<dire_2>      # 根据层级创建目录
(1) 删除目录

通过 rm 命令删除目录。

rmdir <dire_name>             # 无法删除非空目录
        
rm -rf <dire_name>            # 强制删除,删除非空目录时使用
(2) 删除文件

删除 N 天前的文件。

find <path> -type f -mtime +N -exec rm {} \;

2. 目录迁移

Linux 中没有重命名命令,移动到当前目录即等价于重命名。

mv <source_path> <target_path>

复制目录需加 -r ,复制文件则不需要。

cp <source_path> <target_path>                  # 移动文件

cp -r <source_path> <target_path>               # 移动目录

文件链接分为软链接和硬链接,目录无法创建硬链接,文件则无限制。

ln <path> <nickname>               # 硬链接,即源文件复制 

ln -s <path> <nickname>            # 软链接,即快捷方式

三、文件查看

1. 文件创建

touch <file_name>                         # 创建文件

echo 'content' > <file_name>              # 创建文件并写入内容

2. 内容查看

常用的文件内容查看命令如下:

more <文件名>

cat <文件名>                  # 查看短文档,过长无法显示

head -n <文件名>              # 查看前 n 行,默认 15 行 
     
tail -n <文件名>              # 查看后 n 行,默认尾部 10 行
     
tail -f <文件名>              # 动态查看文件内容

3. 文件查找

通过 find 命令可按照指定规则搜索文件或目录。

属性 作用
path 目标搜索路径。
type 搜索类型,依据名称 -name, 依据类型 -type。
name 搜索目标名称,可通过 * 实现泛搜索。
# 基本格式
find <path> <type> <name>

# 查看 path 目录下 N 天前的文件
find <path> -type f -mtime +N -exec ls -l {} \;

4. 文件分发

通过 scp 命令可实现不同服务器之间的文件传输,当传输对象为目录时需要添加 -r 参数。

(1) 分发到远程

如下命令将本机 /temp/hellp.txt 文件复制到 192.168.0.1/temp 目录下,回车后需输入目标服务器的 root 登录密码。

# 命令格式
scp -r <local_path> <User>@<IP>:<remote_path>
    
scp -r /temp/hellp.txt root@192.168.173.1:/temp
(2) 分发到本机

如下将 192.168.173.1/temp/hellp.txt 文件复制到本机 /temp 目录下。

# 命令格式
scp -r root@<IP>:<remote_path> <local_path>

scp -r root@192.168.173.1:/temp/hellp.txt /temp

四、用户管理

1. 创建用户

通过 useradd 创建用户之后会在 /home 目录下生成同名目录。

useradd <用户名>              # 创建用户

passwd <用户名>               # 设置密码

useradd -c <备注>             # 创建带备注信息的用户

2. 删除用户

通过 userdel 命令删除用户,添加参数 -r 会删除在 /home 目录下创建的同名文件夹。

userdel <user_name>                # /home 路径下的目录仍存在

userdel -r <user_name>             # 完全删除用户及其文件夹 

3. 权限管理

通过 usermod 命令管理用户权限。

usermod -s /sbin/nologin <user_name>       # 设置用户不能登陆系统

usermod -L <user_name>                     # 即无法使用该用户名进行登录

usermod -U <user_name>                     # 重新启用被禁用的用户

五、压缩管理

常见的压缩包格式有:.tar, .tar.gz, .zip , .gzip ,根据不同格式选择不同命令。

1. 文件打包

在实际环境中最常见到是 tar.gz ,因为该方式能够保存文件权限信息,压缩后文件为红色标识,目录大小不变,其中相关命令参数如下:

方法 作用
-c 创建新的 tar 文件包。
-x 解包 tar 文件。
-z 将文件压缩为 gz 格式。
-t 在不解包的情况下显示包文件内容。
-f 用于指定文件名称。
-v 不显示文件目录打包过程。
tar -cf <alias.tar> <target>                    # 打包文件

tar -xf <alias.tar>                             # 解包文件

tar -tf <target.tar>                            # 不解压的前提列出文件

tar -zcf <alias.tar.gz> <target>                # 打包目录并压缩
    
tar -zxf <target.tar.gz>                        # 解压缩文件

2. 文件压解缩

其中 -r 表示压缩整个目录。

zip -r <name.zip> <dire_name>                # 压缩文件 

gzip -d <file>                               # 解压文件 

unzip -l <name.zip>                          # 不解压列出

unzip <name.zip> <dire_name>                 # 解压到指定路径

六、文本编辑

1. 插入模式

在命令模式下按 i 键进入。

2. 命令模式

在插入模式下按 esc 键进入。

3. 末行模式

在插入模式下按 exit 键进入命令模式,然后输入对应命令按回车即可。

命令 功能 命令 功能
0 左移光标到行首 $ 右移光标至行尾
gg 光标移至首行 ctrl + g 光标移至尾行
u 撤销上一步操作 dd 删除光标所在行行
yy 拷贝光标所在行 /word 搜索,n 查看下一个词
: set nu 显示行标 : set nonu 关闭行标

七、进程管理

1. 防火墙

针对生产服务器并不建议关闭防火墙,应根据情况对放行相应端口或 IP

systemctl status firewalld              # 防火墙状态

systemctl stop firewalld                # 停止防火墙

systemctl disable firewalld             # 禁用防火墙

firewall-cmd --reload                   # 刷新配置

2. 策略管理

(1) 端口策略

每次修改端口策略后都需要刷新配置使其生效。

# 开启指定端口
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 关闭指定端口
firewall-cmd --zone=public --remove-port=22/tcp --permanent

# 查看已打开的所有端口
firewall-cmd --zone=public --list-ports   
(2) IP策略

每次修改 IP 策略后都需要刷新配置使其生效。

# 放行指定 IP
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.1" accept"

# 移除配置的策略
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.0.1" accept"

# 查看策略
firewall-cmd --list-all

3. 进程管理

通过 ps 组合命令可根据服务名查询进程信息。

top                      # 查看系统中进程动态变化 

jobs                     # 查看后台的进程

ps aux | grep <name>     # 查看服务进程

通过 pwdx 命令可查询对应进程的服务运行目录。

pwdx <pid>              # 根据进程号查看应用目录

pgrep <name>             # 根据服务查看进程号

4. 端口监听

netstatlsof 命令都能根据端口查询其对应服务进程信息。

# 工具安装
yum install -y net-tools

# 查看指定端口
netstat -tunl | grep <port>

# 查看端口占用情况 
lsof -i:<port>

八、网络请求

1. Get请求

curl 默认发送的即 Get 请求,若请求含参则通过 ? 拼接于 url 中。

curl <url>          # 发送 get 请求到 url

curl <url>?id=123&name=alex

2. Post请求

通过 -X Post 指定请求方式为 Post-H 用于指定请求头,-d 用于指定请求体内容。

curl -X POST -d 'name=alex&pwd=456' <url>

curl -H "Content-Type: application/json" \
-X POST -d '{"name":"alex","pwd":"456"}' <url>

九、服务器优化

1. Host修改

通过设置 hostname 服务器之前即可不通过 IP 实现访问。

# 自定义本机名称
hostnamectl set-hostname <自定义名称>

添加集群 Host ,在配置文件添加如下内容:

# 编辑 Hosts 配置
vi /etc/hosts

# 文件添加内容示例
192.168.173.1 node1
192.168.173.2 node2
192.168.173.3 node3

2. JDK安装

JDK 安装步骤较为简单,提前下载好对应版本的 JDK 并上传至服务器,修改系统文件并刷新即可。

通过 arch 命令查看服务器是 x86 还是 arm 并上传下载的服务包,编辑 /etc/profile 文件并在文末配置 JDK 环境变量。

vim /etc/profile        # 修改配置文件

export JAVA_HOME=/usr/local/jdk1.8.0_261
export PATH=${JAVA_HOME}/bin:$PATH

通过 source 命令重载配置使环境变量生效。

source /etc/profile      # 生效配置

文章作者: 烽火戏诸诸诸侯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 烽火戏诸诸诸侯 !
  目录